﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FreeKickManager
{
    public partial class FrmFinanzas : Form
    {
        //Gastos
        private int totalSalarios = 0;
        private int salarioJuvenil = 0;
        private int salarioSenior = 0;

        private int totalEntrenamiento = 0;
        private int totalCantera = 0;

        //Ingresos
        private int totalRecaudacion = 0;
        private int recaudacionJuvenil = 0;
        private int recaudacionSenior = 0;

        private int totalPatrocinadores = 0;
        private int patrocinadoresBase = 0;
        private int patrocinadoresRendimiento = 0;

        public FrmFinanzas()
        {
            InitializeComponent();

            //Cargamos las listas de jugadores
            BDFreeKick bd = FrmPrincipal.bd;

            List<Jugador> listaJugadores = bd.selectAllJugadorCompleto();

            foreach (Jugador j in listaJugadores)
            {
                if (j.juvenil)
                {
                    lstJuvenil.Items.Add(new ListViewItem(new string[] { j.ToString(), j.salario.ToString() }));
                }
                else
                {
                    lstSenior.Items.Add(new ListViewItem(new string[] { j.ToString(), j.salario.ToString() }));
                }
            }

            //Marcamos todos los jugadores
            foreach (ListViewItem li in lstSenior.Items)
            {
                li.Checked = true;
            }
            foreach (ListViewItem li in lstJuvenil.Items)
            {
                li.Checked = true;
            }      

            //Cargamos las opciones
            txtCantera.Text = FrmPrincipal.opciones.obtenerOpcion("cantera");
            txtRecaudacionSenior.Text = FrmPrincipal.opciones.obtenerOpcion("recaudacionSenior");
            txtRecaudacionJuvenil.Text = FrmPrincipal.opciones.obtenerOpcion("recaudacionJuvenil");
            txtPatrocinadorBase.Text = FrmPrincipal.opciones.obtenerOpcion("patrocinadoresBase");
            txtPatrocinadorRendimiento.Text = FrmPrincipal.opciones.obtenerOpcion("patrocinadoresRendimiento");
     
            //Refrescamos el balance
            refrescarBalance();
        }

        private void refrescarBalance()
        {
            //Gastos
            calcularSalarios();
            calcularEntrenamiento();
            calcularCantera();

            //Ingresos
            calcularRecaudacion();
            calcularPatrocinadores();

            //Balance
            lblBalanceGastos.Text = (totalSalarios + totalEntrenamiento + totalCantera).ToString();
            lblBalanceIngresos.Text = (totalRecaudacion + totalPatrocinadores).ToString();
            lblBalanceTotal.Text = (totalRecaudacion + totalPatrocinadores - totalSalarios - totalEntrenamiento - totalCantera).ToString();

            //Resumen
            lblResSalarioSenior.Text = salarioSenior.ToString();
            lblResSalarioJuvenil.Text = salarioJuvenil.ToString();
            lblResEntrenamiento.Text = totalEntrenamiento.ToString();
            lblResCantera.Text = totalCantera.ToString();

            lblResRecSenior.Text = recaudacionSenior.ToString();
            lblResRecJuvenil.Text = recaudacionJuvenil.ToString();
            lblResPatBase.Text = patrocinadoresBase.ToString();
            lblResPatRend.Text = patrocinadoresRendimiento.ToString();
        }

        private void calcularSalarios()
        {
            totalSalarios = 0;
            salarioJuvenil = 0;
            salarioSenior = 0;

            foreach (ListViewItem li in lstSenior.Items)
            {
                if (li.Checked)
                {
                    totalSalarios += Convert.ToInt32(li.SubItems[1].Text);
                    salarioSenior += Convert.ToInt32(li.SubItems[1].Text);
                }
            }

            foreach (ListViewItem li in lstJuvenil.Items)
            {
                if (li.Checked)
                {
                    totalSalarios += Convert.ToInt32(li.SubItems[1].Text);
                    salarioJuvenil += Convert.ToInt32(li.SubItems[1].Text);
                }
            }
        }

        private void calcularEntrenamiento()
        {
            int numJugadores = 0;
            int num100 = 0;
            int num200 = 0;

            foreach (ListViewItem li in lstSenior.Items)
            {
                if (li.Checked)
                    numJugadores++;
            }
            foreach (ListViewItem li in lstJuvenil.Items)
            {
                if (li.Checked)
                    numJugadores++;
            }

            num100 = numJugadores > 50 ? 50 : numJugadores;
            num200 = numJugadores > 50 ? (numJugadores-50) : 0;

            lblEntrenamiento100.Text = num100.ToString();
            lblEntrenamiento200.Text = num200.ToString();
            lblSubtotal100.Text = (num100*100).ToString();
            lblSubtotal200.Text = (num200*200).ToString();

            lblTotalEntrenamiento.Text = (num100 * 100 + num200 * 200).ToString();

            totalEntrenamiento = (num100 * 100 + num200 * 200);
        }

        private void calcularCantera()
        {
            int num;

            if (Int32.TryParse(txtCantera.Text, out num))
                totalCantera = Convert.ToInt32(txtCantera.Text);
            else
                totalCantera = 0;
        }

        private void calcularRecaudacion()
        {
            int num;

            totalRecaudacion = 0;
            recaudacionJuvenil = 0;
            recaudacionSenior = 0;

            if (Int32.TryParse(txtRecaudacionJuvenil.Text, out num))
            {
                totalRecaudacion += Convert.ToInt32(txtRecaudacionJuvenil.Text);
                recaudacionJuvenil = Convert.ToInt32(txtRecaudacionJuvenil.Text);
            }

            if (Int32.TryParse(txtRecaudacionSenior.Text, out num))
            {
                totalRecaudacion += Convert.ToInt32(txtRecaudacionSenior.Text);
                recaudacionSenior = Convert.ToInt32(txtRecaudacionSenior.Text);
            }
        }

        private void calcularPatrocinadores()
        {
            int num;

            totalPatrocinadores = 0;
            patrocinadoresBase = 0;
            patrocinadoresRendimiento = 0;

            if (Int32.TryParse(txtPatrocinadorBase.Text, out num))
            {
                totalPatrocinadores += Convert.ToInt32(txtPatrocinadorBase.Text);
                patrocinadoresBase = Convert.ToInt32(txtPatrocinadorBase.Text);
            }

            if (Int32.TryParse(txtPatrocinadorRendimiento.Text, out num))
            {
                totalPatrocinadores += Convert.ToInt32(txtPatrocinadorRendimiento.Text);
                patrocinadoresRendimiento = Convert.ToInt32(txtPatrocinadorRendimiento.Text);
            }
        }

        private void lstSenior_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            refrescarBalance();
        }

        private void lstJuvenil_ItemChecked(object sender, ItemCheckedEventArgs e)
        {
            refrescarBalance();
        }

        private void txtCantera_TextChanged(object sender, EventArgs e)
        {
            refrescarBalance();
        }

        private void txtRecaudacionSenior_TextChanged(object sender, EventArgs e)
        {
            refrescarBalance();
        }

        private void txtRecaudacionJuvenil_TextChanged(object sender, EventArgs e)
        {
            refrescarBalance();
        }

        private void txtPatrocinadorBase_TextChanged(object sender, EventArgs e)
        {
            refrescarBalance();
        }

        private void txtPatrocinadorRendimiento_TextChanged(object sender, EventArgs e)
        {
            refrescarBalance();
        }

        private void btnGuardarCantera_Click(object sender, EventArgs e)
        {
            FrmPrincipal.opciones.modificarOpcion("cantera", txtCantera.Text);
            guardarOpciones();
        }

        private void btnGuardarRecaudacion_Click(object sender, EventArgs e)
        {
            FrmPrincipal.opciones.modificarOpcion("recaudacionSenior", txtRecaudacionSenior.Text);
            FrmPrincipal.opciones.modificarOpcion("recaudacionJuvenil", txtRecaudacionJuvenil.Text);
            guardarOpciones();
        }

        private void btnGuardarPatrocinadores_Click(object sender, EventArgs e)
        {
            FrmPrincipal.opciones.modificarOpcion("patrocinadoresBase", txtPatrocinadorBase.Text);
            FrmPrincipal.opciones.modificarOpcion("patrocinadoresRendimiento", txtPatrocinadorRendimiento.Text);
            guardarOpciones();
        }

        private void guardarOpciones()
        {
            FrmPrincipal.bd.deleteOpciones();
            FrmPrincipal.bd.insertAllOpciones(FrmPrincipal.opciones);
        }
    }
}
